Macro 3d Printer Slicer Individual Parts/pl

Macro 3d Printer Slicer Individual Parts

Opis
Eksport do oprogramowania do cięcia (slicerów) dla drukarek 3D, oparty na podobnym makrze autorstwa cae2100. Eksportuje pojedynczy plik STL dla każdej widocznej części do tego samego katalogu, w którym znajduje się oryginalny plik projektu, a następnie otwiera go w oprogramowaniu do cięcia.
Po uruchomieniu kod eksportuje aktualnie otwarty projekt do kilku plików STL, nazwanych zgodnie z etykietami części, i otwiera je w używanym slicerze. Makro domyślnie wyszukuje program [1] Cura, ale możesz użyć innego slicera, zmieniając odpowiedni ciąg znaków w kodzie makra.

Macro version: 1.1
Last modified: 2020-10-30
FreeCAD version: All
Download: ToolBar Icon
Autor: WayofWood
Autor
WayofWood
Do pobrania
ToolBar Icon
Odnośniki
Wersja Makrodefinicji
1.1
Data zmian
2020-10-30
Wersja FreeCAD
All
Domyślny skrót
Brak
Zobacz również
Macro 3d Printer Slicer

Opis

Ten kod, po uruchomieniu, wyeksportuje widoczne bryły znajdujące się na najwyższym poziomie drzewa (bryły głębiej w strukturze zostaną pominięte) z aktualnie otwartego projektu do osobnych plików STL, a następnie otworzy je w używanym przez Ciebie programie do cięcia (slicerze). Makro domyślnie wyszukuje program Cura, ale można to zmienić, edytując zmienną `SLICERAPP` w kodzie źródłowym i podając ścieżkę do innego slicera.

Najlepiej korzystać z tego makra, tworząc skrót do niego na pasku narzędzi. Gdy będziesz gotowy do cięcia obiektów, po prostu kliknij ikonę makra – obiekty, tak jak są widoczne na ekranie w FreeCAD, pojawią się w interfejsie Twojego programu do cięcia, gotowe do dalszej obróbki. Makro utworzy także kilka plików STL, nadając im nazwy zgodne z nazwą pliku projektu oraz etykietami części, i zapisze je w tym samym katalogu co plik projektu.

Skrypt

Zmienną SLICERAPP można zmienić, aby używać dowolnego wybranego oprogramowania do cięcia. Jeśli jakiś konkretny obiekt nie zostanie wyeksportowany, może być konieczne dodanie jego typu do tablicy doexport.

Ikonka paska narzędzi

Macro_3d_Printer_Slicer_Individual_Parts.py

import FreeCAD
import Mesh
import sys
import math
import os
import subprocess

SLICERAPP= "cura"		 			# Put your Slicer program here

# some fuctions
def getPlacement(quat,vect,obj):
  if quat[3] > -1  and quat[3] < 1:
    delta = math.acos(quat[3])*2.0
    scale = math.sin(delta/2)
    rx = quat[0]/scale
    ry = quat[1]/scale
    rz = quat[2]/scale
  else:
    delta = 0
    rx = 0
    ry = 0
    rz = 1
  info0 = "translation "+str(vect.x)+" "+str(vect.y)+" "+str(vect.z)
  info1 = "rotation "+str(rx)+" "+str(ry)+" "+str(rz)+" "+str(delta)
  return info0+" "+info1
# some definitions
placement = App.Placement(App.Vector(0,0,0),App.Rotation(0,0,0,1))
# user need to set this directory where slicing software is located
OutDir = FreeCAD.ActiveDocument.FileName.replace(".FCStd", "--")
visible_objs = []
# Get Objects in document
doc = App.ActiveDocument
objs = doc.Objects
stlFile = ""
stlFiles = [ SLICERAPP ]
# hide all
for obj in objs:
   print(obj.Label + "//" + obj.TypeId)
   print(len(obj.InList))
   if obj.ViewObject.isVisible() and hasattr(obj, 'Shape') and (len(obj.InList) <= 1):
      visible_objs.append(obj)
for obj in visible_objs:
  stlFile = OutDir+str(obj.Label)+".stl"
  Mesh.export([obj],stlFile)
  stlFiles.append(stlFile)
  print ("Exporting " + stlFile + "\n")
print ("Calling subprocess: " + str(stlFiles)+"\n")
subprocess.Popen(stlFiles)

Zasłużeni

Podziękowania dla cae2100 za opracowanie oryginalnego kodu makra – dostępnego również tutaj.
Podziękowania dla Wmayera za pomoc przy pisaniu tego skryptu.
Oryginalny wątek na forum: https://forum.freecad.org/viewtopic.php?f=10\&t=4686